

import Foundation

public protocol NamespaceWrappable {
    associatedtype T
    var ext: T { get }
    //*Returns the type of the discovered or published service
    static var ext: T.Type { get }
}

public struct JX_TypeWrapper<T> {
    var SELF: T
    init(value: T) {
        self.SELF = value
    }
}

extension NamespaceWrappable {
    public var ext: JX_TypeWrapper<Self> {
        set {}
        get {return JX_TypeWrapper(value: self)}
    }
    
    public static var ext: JX_TypeWrapper<Self>.Type {
        return JX_TypeWrapper.self
    }
}

extension NSObject : NamespaceWrappable{}
